package ObjectOrientedTest6;

public class Test {
    public static void main(String[] args) {
        //1.创建一个数组用来存学生
        Student[] arr = new Student[3];

        //2.创建三个学生对象
        Student s1 = new Student(1, "zhangsan", 23);
        Student s2 = new Student(2, "lisi", 24);
        Student s3 = new Student(3, "wangwu", 25);

        //3.将三个学生对象添加到数组中
        arr[0] = s1;
        arr[1] = s2;
        arr[2] = s3;

//        //再次传递一个学生对象，并在添加时判断id唯一性
//        Student s4 = new Student(4, "zhaoliu", 26);
//        //判断id是否存在
//        boolean flag = contains(arr, s4.getId());
//        if (flag) {
//            System.out.println("当前id重复，请修改id后在进行添加");
//        } else {
//            //没存满直接添加，存满再创一个数组长度为length+1
//            int count = getCount(arr);
//            if (count == arr.length) {
//                //已存满，创建新数组
//                Student[] newArr = creatNewArr(arr);
//                //将元素存入新数组
//                newArr[count] = s4;
//                printArr(newArr);
//            } else {
//                arr[count] = s4;
//                printArr(arr);
//            }
//        }

        //通过id删除学生信息
        //如果存在则删除，不存在提示删除失败
        int index = getIndex(arr, 3);
//        System.out.println(index);
        if(index>=0){
            arr[index]=null;
            printArr(arr);
        }else{
            System.out.println("当前id不存在，删除失败");
        }

        //将id为2的学生年龄+1
        index=getIndex(arr,2);
        if(index>=0){
            Student s=arr[index];
            int newAge=s.getAge()+1;
            s.setAge(newAge);
            printArr(arr);
        }else {
            System.out.println("当前id不存在，修改失败");
        }
    }

    public static int getIndex(Student[] arr,int id){
        for (int i = 0; i < arr.length; i++) {
            Student s=arr[i];
            if(s!=null){
                int sid=s.getId();
                if(sid==id){
                    return i;
                }
            }
        }
        return -1;
    }


    public static void printArr(Student[] arr) {
        for (int i = 0; i < arr.length; i++) {
            Student s=arr[i];
            if(arr[i]!=null){
                System.out.println(s.getId()+","+s.getName()+","+s.getAge());
            }
        }
    }


    //创建一个新数组长度+1
    public static Student[] creatNewArr(Student[] arr) {
        Student[] newArr = new Student[arr.length + 1];
        //将旧数组中的元素添加到新数组中
        for (int i = 0; i < arr.length; i++) {
            newArr[i] = arr[i];
        }
        return newArr;//返回新数组
    }


    //计算数组中有多少个元素
    public static int getCount(Student[] arr) {
        int count = 0;
        for (int i = 0; i < arr.length; i++) {
            if (arr[i] != null) {
                count++;
            }
        }
        return count;
    }

    //判断数组是否存在
    public static boolean contains(Student[] arr, int id) {
        for (int i = 0; i < arr.length; i++) {
            Student s = arr[i];
            if(s!=null){
                int sid = s.getId();
                if (id == sid) {
                    return true;
                }
            }
        }
        return false;
    }
}
